// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
// 引入element UI
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css';
//引入状态管理
import store from './vuex/store'
// 引入icon
import './assets/icon/iconfont.css'
import echarts from 'echarts'
Vue.prototype.$echarts = echarts

import axios from 'axios'
Vue.prototype.$axios = axios;

Vue.config.productionTip = false
// 使用element UI
Vue.use(ElementUI)
// 过滤器
import * as custom from './utils/util'

Object.keys(custom).forEach(key => {
    Vue.filter(key, custom[key])
})



//路由拦截器，用来控制跳转
/**
 * to 跳转目标路由
 * from 正在离开的路由
 */
router.beforeEach((to, from, next) => {
  if (to.matched.length != 0) {
      if (to.meta.requireAuth) { // 判断该路由是否需要登录权限
          if (Boolean(localStorage.getItem("userInfo"))) { // 通过vuex state获取当前的user是否存在
              next();
          } else {
              next({
                  path: '/login',
                  query: { redirect: to.fullPath } // 将跳转的路由path作为参数，登录成功后跳转到该路由
              })
          }
      } else {
          if (Boolean(localStorage.getItem("userInfo"))) { // 判断是否登录
              if (to.path != "/" && to.path != "/login") { //判断是否要跳到登录界面
                  next();
              } else {
                  /**
                   * 防刷新，如果登录，修改路由跳转到登录页面，修改路由为登录后的首页 
                   */
                  next({
                      path: '/goods/Goods'
                  })
              }
          } else {
              next();
          }
      }
  } else {
      next({
          path: '/login',
          query: { redirect: to.fullPath } // 将跳转的路由path作为参数，登录成功后跳转到该路由
      })
  }
})


/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  store,//使用store vuex状态管理
  components: { App },
  template: '<App/>',
  data: {    // 空的实例放到根组件下，所有的子组件都能调用
    Bus: new Vue()
  },
})
